########
# Usage: Rscript detail_cell_boxplot1.R 'Adipose Tissue' "Healthy,Benign,BRCA,HCC,SCLC"
# 传入参数： target = 'Adipose Tissue'  
#            cohort.selected = c('Healthy', 'Benign', 'BRCA', 'HCC', 'SCLC')
########
library(ggplot2)
library(ggpubr)
library(RColorBrewer)

library(optparse)

option_list <- list(
  make_option("--t", default = "", type = "character", help = "target"),
  make_option("--absInput", default = "", type = "character", help = "abs input file"),
  make_option("--relInput", default = "", type = "character", help = "rel input file"),
  make_option("--c", default = "", type = "character", help = "cohort selected"),
  make_option("--absOut", default = "", type = "character", help = "abs output png file"),
  make_option("--relOut", default = "", type = "character", help = "rel output png file")
)
opt <- parse_args(OptionParser(option_list = option_list))

Args = commandArgs()
target = opt$t
cohort.selected = opt$c
cohort.selected = as.vector(unlist(strsplit(cohort.selected, ',')))

# target = 'Adipose Tissue'
# cohort.selected = c('Healthy', 'Benign', 'BRCA', 'HCC', 'SCLC')
# cohort.selected = c("Urine","Bile","CSF","Healthy","Benign","BRCA","CHD","CRC","GC","HCC","KIRC","ML","OV","PAAD","SCLC")
# path = "D:\\exo\\905\\submit 7\\detail_cell"
# setwd(path)

targetType = 'cell'
w=12
h=6

infile =opt$absInput
outfile = opt$absOut
data.target = read.csv(infile, sep=',', header = 1, row.names = NULL)
colnames(data.target) = c('sample', 'type', 'cohort', 'sampleSize', 'score')
data.target = data.target[data.target$cohort %in% cohort.selected, ]
data.target$label = paste(data.target$cohort, '\n', '(', data.target$sampleSize,')', sep='')   ### label

cohortsNumber = length(cohort.selected)
if(cohortsNumber==15){               ### 默认选择除（ESCC, GBM, MEL）外的所有cohort， 且固定cohort顺序
  labelOrder = c("Urine\n(16)","CSF\n(5)","Bile\n(15)","Healthy\n(118)","Benign\n(130)","BRCA\n(140)","CHD\n(12)","CRC\n(35)","GC\n(9)","HCC\n(112)","KIRC\n(15)","ML\n(28)","OV\n(30)","PAAD\n(164)","SCLC\n(36)")
  data.target$label = factor(data.target$label, levels = labelOrder)
}

cols = c(brewer.pal(9,"Pastel1"), brewer.pal(9,"Set3"))
pdf(outfile, width=w, height=h)
p = ggboxplot(data.target, x="label",y="score", 
              color="#5C5C5C", fill='label', width = 0.6, palette=cols,
              bxp.errorbar = T, bxp.errorbar.width = 0.3, size = 0.8,
              add = "jitter",add.params =list(size=0.2, color='#5C5C5C'),
              outlier.shape= NA)+
  ylab('Absolute abundance')+xlab('')+
  ggtitle(target)+
  theme_bw() + theme(panel.grid = element_blank())+
  theme(axis.title = element_text(size = 12, face = "bold"))+
  theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5))+
  guides(fill = FALSE, colour = FALSE)+
  theme(panel.border = element_rect(linetype = 'solid', size = 1.2,fill = NA),
        axis.text.y = element_text(face = 'bold',color = 'black',size = 10, angle = 360),
        axis.text.x = element_text(face = 'bold',color = 'black',size = 10, angle = 360, hjust = 0.5),
        axis.title = element_text(size = 14, face = "bold"))
print(p)
dev.off()


infile = opt$relInput
outfile = opt$relOut
data.target = read.csv(infile, sep=',', header = 1, row.names = NULL)
colnames(data.target) = c('sample', 'type', 'cohort','sampleSize', 'score')
data.target = data.target[data.target$cohort %in% cohort.selected, ]
data.target$label = paste(data.target$cohort, '\n', '(', data.target$sampleSize,')', sep='')   ### label

cohortsNumber = length(cohort.selected)
if(cohortsNumber==15){               ### 默认选择除（ESCC, GBM, MEL）外的所有cohort， 且固定cohort顺序
  labelOrder = c("Urine\n(16)","CSF\n(5)","Bile\n(15)","Healthy\n(118)","Benign\n(130)","BRCA\n(140)","CHD\n(12)","CRC\n(35)","GC\n(9)","HCC\n(112)","KIRC\n(15)","ML\n(28)","OV\n(30)","PAAD\n(164)","SCLC\n(36)")
  data.target$label = factor(data.target$label, levels = labelOrder)
}

cols = c(brewer.pal(9,"Pastel1"), brewer.pal(9,"Set3"))
pdf(outfile, width=w, height=h)
p = ggboxplot(data.target, x="label",y="score", 
              color="#5C5C5C", fill='label', width = 0.6, palette=cols,
              bxp.errorbar = T, bxp.errorbar.width = 0.3, size = 0.8,
              add = "jitter",add.params =list(size=0.2, color='#5C5C5C'),
              outlier.shape= NA)+
  ylab('Relative abundance')+xlab('')+
  ggtitle(target)+
  theme_bw() + theme(panel.grid = element_blank())+
  theme(axis.title = element_text(size = 12, face = "bold"))+
  theme(plot.title = element_text(size = 14, face = "bold", hjust = 0.5))+
  guides(fill = FALSE, colour = FALSE)+
  theme(panel.border = element_rect(linetype = 'solid', size = 1.2,fill = NA),
        axis.text.y = element_text(face = 'bold',color = 'black',size = 10, angle = 360),
        axis.text.x = element_text(face = 'bold',color = 'black',size = 10, angle = 360, hjust = 0.5),
        axis.title = element_text(size = 14, face = "bold"))
print(p)
dev.off()